package com.zd.commodity.productMng.biz.impl;

import java.util.HashMap;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.zd.commodity.biz.impl.BaseBiz;
import com.zd.commodity.productMng.biz.IProductPriceBiz;
import com.zd.commodity.productMng.dao.IProductPriceDao;
import com.zd.commodity.productMng.entity.ProductPrice;
import com.zd.commodity.userMng.entity.User;

@Service("productPriceBiz")
public class ProductPriceBizImpl extends BaseBiz<ProductPrice> implements IProductPriceBiz {

	private IProductPriceDao productPriceDao;

	public IProductPriceDao getProductPriceDao() {
		return productPriceDao;
	}

	@Autowired
	public void setProductPriceDao(IProductPriceDao productPriceDao) {
		this.productPriceDao = productPriceDao;
	    this.setBaseDao(productPriceDao);
	}
	
	public List<ProductPrice> findByProductId(Long productId){
		return productPriceDao.findByProductId(productId);
	}
	
	public void updateProductPrice(ProductPrice t1,List<ProductPrice> productPriceList,User user){
		
		//从数据库中获取某商品已存在的价格
		List<ProductPrice> list=productPriceDao.getList(t1, null, null);
		//将价格集合转换成map   键：类型  值：对象
		HashMap<Integer,ProductPrice> map = new HashMap();
		for (ProductPrice pp : list) {
			map.put(pp.getType(), pp);
		}
		
		
		
		for(int i=0;i<productPriceList.size();i++){
			
			ProductPrice updatePrice=productPriceList.get(i);
			//判断上传的价格是否为空
			boolean flag = updatePrice.getPrice()==null||"".equals(updatePrice.getPrice());
			
			//从数据库得到的集合中获取type值类型的对象    若该对象为空，说明数据库中不存在则添加；若该对象不为空，说明数据库中已存在相应价格，则修改或删除
			ProductPrice price = map.get(i+1);
			if(price!=null){
				if(flag){//从数据库中过去到该type的对象，且上传的price为空则进行删除操作
					productPriceDao.delete(price.getId());
				}else{
					//从数据库中过去到该type的对象，且上传的price不为空且不相等  修改
					if(!price.getPrice().equals(updatePrice.getPrice())){
						price.setPrice(updatePrice.getPrice());
						productPriceDao.update(price);
					}
				}
			}else{
				//数据库不存在则插入
				if(!flag){//上传的数据中price不为空才添加
					ProductPrice newPrice = new ProductPrice();
					newPrice.setProduct(t1.getProduct());
					newPrice.setType(i+1);
					newPrice.setPrice(updatePrice.getPrice());
					productPriceDao.add(newPrice);
				}
			}
		}
	}
}
